﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Data.SqlClient;
using ServiceDeskUNAB.Modelo;
namespace ServiceDeskUNAB.Controlador
{
    class CategoriaIncidenciaControlador
    {

        private static CategoriaIncidenciaControlador instance;


        private CategoriaIncidenciaControlador()
        {           
        }

        public static CategoriaIncidenciaControlador Instance
        {
            get
            {
                if (instance == null)
                {
                    instance = new CategoriaIncidenciaControlador();
                }
                return instance;
            }
        }
        public bool Ingresar(CategoriaIncidencia ci)
        {

            try
            {
                SqlCommand com = new SqlCommand();


                com.CommandText = "INSERT INTO CategoriaIncidencia" +
                    "(Nombre_CategoriaIncidencia)" + "VALUES" +
                    "(@Nombre_CategoriaIncidencia)";

                //com.Parameters.AddWithValue("@ID_CategoriaIncidencia", ID_CategoriaIncidencia);
                com.Parameters.AddWithValue("@Nombres_CategoriaIncidencia", ci.NombreCategoriaIncidencia);


                com.Connection = Conexion.Instance.Con;
                SqlDataReader ejecutar = com.ExecuteReader();
                Conexion.Instance.Con.Close();
                return true;
            }
            catch (Exception e)
            {
                Conexion.Instance.Con.Close();
                Console.WriteLine(e.Message);
                return false;
                throw;
            }

        }
        public bool Modificar(CategoriaIncidencia ci)
        {
            try
            {
                SqlCommand com = new SqlCommand();


                com.CommandText = "UPDATE CategoriaIncidencia " +
                    "SET Nombre_CategoriaIncidencia = @Nombre_CategoriaIncidencia" +
                    "WHERE ID_CategoriaIncidencia = @ID_CategoriaIncidencia";

                com.Parameters.AddWithValue("@ID_CategoriaIncidencia", ci.IdCategoriaIncidencia);
                com.Parameters.AddWithValue("@Nombres_CategoriaIncidencia", ci.NombreCategoriaIncidencia);

                com.Connection = Conexion.Instance.Con;
                SqlDataReader ejecutar = com.ExecuteReader();
                // TODO terminar esto

                Conexion.Instance.Con.Close();
                return true;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Conexion.Instance.Con.Close();
                return false;
                throw;
            }
        }
        public bool Eliminar(string ID_CategoriaIncidencia)
        {
            bool resultado = false;
            try
            {
                SqlCommand com = new SqlCommand("DELETE FROM CategoriaIncidencia WHERE ID_CategoriaIncidencia = '" + ID_CategoriaIncidencia + "')");
                SqlDataReader ejecutar = com.ExecuteReader();
                if (ejecutar.Read())
                {
                    resultado = true;
                }
                Conexion.Instance.Con.Close();
                return resultado;
            }
            catch (Exception)
            {
                Conexion.Instance.Con.Close();
                return resultado;
                throw;
            }
        }

        public CategoriaIncidencia Buscar(string ID_CategoriaIncidencia)
        {
            CategoriaIncidencia resultado = null;
            try
            {
                SqlCommand com = new SqlCommand("Select * FROM CategoriaIncidencia WHERE ID_CategoriaIncidencia = '" + ID_CategoriaIncidencia + "')");
                SqlDataReader ejecutar = com.ExecuteReader();
                if (ejecutar.Read())
                {
                    resultado.IdCategoriaIncidencia = (int)(ejecutar["ID_CategoriaIncidencia"]);
                    resultado.NombreCategoriaIncidencia = (string)(ejecutar["Nombre_CategoriaIncidencia"]);
                }
                Conexion.Instance.Con.Close();
                return resultado;
            }
            catch (Exception)
            {
                Conexion.Instance.Con.Close();
                return resultado;
                throw;
            }
        }
    }
}
